import 'dart:convert';

// 函数：将JSON字符串转换为ProductContentModel对象
ProductContentModel productContentModelFromJson(String str) =>
    ProductContentModel.fromJson(json.decode(str));

// 函数：将ProductContentModel对象转换为JSON字符串
String productContentModelToJson(ProductContentModel data) =>
    json.encode(data.toJson());

// ProductContentModel类，表示产品内容模型
class ProductContentModel {
  ProductItemModel result; // 产品项模型

  // 构造函数
  ProductContentModel({
    required this.result, // 产品项模型
  });

  // 工厂方法：从JSON创建ProductContentModel对象
  factory ProductContentModel.fromJson(Map<String, dynamic> json) =>
      ProductContentModel(
        result: ProductItemModel.fromJson(json["result"]), // 从JSON中获取产品项模型
      );

  // 方法：将ProductContentModel对象转换为JSON
  Map<String, dynamic> toJson() => {
        "result": result.toJson(), // 将产品项模型转换为JSON
      };
}

// ProductItemModel类，表示产品项模型
class ProductItemModel {
  String id; // 产品ID
  String title; // 产品标题
  String cid; // 类别ID
  dynamic price; // 价格
  dynamic oldPrice; // 原价
  dynamic isBest; // 是否为最佳
  dynamic isHot; // 是否为热门
  dynamic isNew; // 是否为新品
  dynamic status; // 状态
  String pic; // 图片
  String content; // 内容
  String cname; // 类别名称
  List<Attr> attr; // 属性列表
  String subTitle; // 副标题
  int salecount; // 销售数量

  // 新增属性
  int count; // 数量
  String selectedAttr; // 选中的属性

  // 构造函数
  ProductItemModel({
    required this.id, // 产品ID
    required this.title, // 产品标题
    required this.cid, // 类别ID
    required this.price, // 价格
    required this.oldPrice, // 原价
    required this.isBest, // 是否为最佳
    required this.isHot, // 是否为热门
    required this.isNew, // 是否为新品
    required this.status, // 状态
    required this.pic, // 图片
    required this.content, // 内容
    required this.cname, // 类别名称
    required this.attr, // 属性列表
    required this.subTitle, // 副标题
    required this.salecount, // 销售数量
    required this.count, // 数量
    required this.selectedAttr, // 选中的属性
  });

  // 工厂方法：从JSON创建ProductItemModel对象
  factory ProductItemModel.fromJson(Map<String, dynamic> json) =>
      ProductItemModel(
          id: json["_id"], // 从JSON中获取产品ID
          title: json["title"], // 从JSON中获取产品标题
          cid: json["cid"], // 从JSON中获取类别ID
          price: json["price"], // 从JSON中获取价格
          oldPrice: json["old_price"], // 从JSON中获取原价
          isBest: json["is_best"], // 从JSON中获取是否为最佳
          isHot: json["is_hot"], // 从JSON中获取是否为热门
          isNew: json["is_new"], // 从JSON中获取是否为新品
          status: json["status"], // 从JSON中获取状态
          pic: json["pic"], // 从JSON中获取图片
          content: json["content"], // 从JSON中获取内容
          cname: json["cname"], // 从JSON中获取类别名称
          attr: List<Attr>.from(
              json["attr"].map((x) => Attr.fromJson(x))), // 从JSON中获取属性列表
          subTitle: json["sub_title"], // 从JSON中获取副标题
          salecount: json["salecount"], // 从JSON中获取销售数量
          count: 1, // 初始化数量为1
          selectedAttr: ''); // 初始化选中的属性为空字符串

  // 方法：将ProductItemModel对象转换为JSON
  Map<String, dynamic> toJson() => {
        "_id": id,
        "title": title,
        "cid": cid,
        "price": price,
        "old_price": oldPrice,
        "is_best": isBest,
        "is_hot": isHot,
        "is_new": isNew,
        "status": status,
        "pic": pic,
        "content": content,
        "cname": cname,
        "attr": List<dynamic>.from(attr.map((x) => x.toJson())),
        "sub_title": subTitle,
        "salecount": salecount,
      };
}

// Attr类，表示属性
class Attr {
  String cate; // 类别
  List<String> list; // 列表
  List<Map> attrList; // 属性列表

  // 构造函数
  Attr({
    required this.cate, // 类别
    required this.list, // 列表
    required this.attrList, // 属性列表
  });

  // 工厂方法：从JSON创建Attr对象
  factory Attr.fromJson(Map<String, dynamic> json) => Attr(
        cate: json["cate"], // 从JSON中获取类别
        list: List<String>.from(json["list"].map((x) => x)), // 从JSON中获取列表
        attrList: [], // 属性列表为空
      );

  // 方法：将Attr对象转换为JSON
  Map<String, dynamic> toJson() => {
        "cate": cate,
        "list": List<dynamic>.from(list.map((x) => x)),
      };
}
